﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 特性
{
    // 规定特性类的用途，用于类或者字段
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)]
    public class StringLengthAttribute : Attribute
    {
        // 一个特性类，一般需要一个字段来标记所作用的对象，比如订单号
        public StringLengthAttribute(string displayName, int maxLength)
        {
            this.DisplayName = displayName;
            this.MaxLength = maxLength;
        }


        public string DisplayName { get; private set; }
        public int MaxLength { get; private set; }
        public string ErrorMessage { get; set; }
        public int MinLength { get; set; }
    }

    /// <summary>
    /// 用来描述方法和类是谁写的，什么时候写的，和版本信息。
    /// </summary>
    [AttributeUsage(AttributeTargets.Class // 可以用在雷伤
        | AttributeTargets.Property // 可以用在属性存取器上
        | AttributeTargets.Method, // 可以用在方法上
        AllowMultiple =true)] // 可以写多个 
    public class WriterInfo : Attribute
    {
        public string Name { get; set; }
        public string EditTime { get; set; }
        public int Version { get; set; }

        public WriterInfo() { }
        public WriterInfo(string name, string editTime, int version)
        {
            Name = name;
            EditTime = editTime;
            Version = version;
        }

        public WriterInfo(string name, string editTime)
        {
            Name = name;
            EditTime = editTime;
        }

        public string Info()
        {
            return string.Format("修改人：{0},修改时间：{1},版本：{2}",Name,EditTime,Version);
        }
    }
}
